class PlanesAccionesController < ApplicationController
  #MODULE: Evaluaciones
  before_filter :find_usuario
  
  def index
  end

  def show
    @plan_accion = PlanAccion.find params[:id]
    respond_to do |format|
      format.html # new.html.erb
      format.js { render :layout => false}
      format.xml  { render :xml => @plan_accion }
    end

  end

  def edit
    @plan_accion = PlanAccion.find params[:id]
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @plan_accion }
    end
  end

  def new
    @plan_accion = PlanAccion.new({:afectado_id=>params[:usuario_id],:evaluado_id=>params[:evaluado_id],:incidente_id=>params[:incidente_id]})
    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @plan_accion }
    end
  end

  def create
    #params[:plan_accion][:clase_id],params[:plan_accion][:clase_type] = params[:clase].split('-')
    @plan_accion = PlanAccion.new(params[:plan_accion])
    respond_to do |format|
      if @plan_accion.save
        @usuario.planes_acciones << @plan_accion
        flash[:notice] =  'Plan de Accion creado correctamente.'
        format.html { redirect_to usuario_plan_accion_path(@usuario, @plan_accion) }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @plan_accion.errors, :status => :unprocessable_entity }
      end
    end
  end

  # PUT /cargos/1
  # PUT /cargos/1.xml
  def update
    #params[:plan_accion][:clase_id],params[:plan_accion][:clase_type] = params[:clase].split('-')
    @plan_accion = PlanAccion.find(params[:id])
    respond_to do |format|
      if @plan_accion.update_attributes(params[:plan_accion])
        flash[:notice] = 'Plan de Accion actualizado correctamente.'
        format.html { redirect_to usuario_plan_accion_path(@usuario, @plan_accion) }
        format.xml  { head :ok }
      else
        format.html { render :action => "edit" }
        format.xml  { render :xml => @plan_accion.errors, :status => :unprocessable_entity }
      end
    end
  end

  # DELETE /cargos/1
  # DELETE /cargos/1.xml
  def destroy
    @plan_accion = PlanAccion.find(params[:id])
    if @plan_accion
      @plan_accion.destroy
      respond_to do |format|
        format.html { redirect_to(usuario_planes_acciones_url(@usuario)) }
        format.xml  { head :ok }
      end
    end
  end

  #Provee datos al index, las opciones de filtrado para param["tipo_lista"] son "Todos"=>0,"Responsable=>1","Afectado"=>2
  def datos #IGNORE
    scope= params["tipo_lista"]=="1" ? :por_responsable_id : :por_afectado_id
    params.delete("tipo_lista")
    clase=PlanAccion.send(scope,params[:usuario_id])
    params.delete("usuario_id")
    registros, count = find_by_params(params, :class =>clase,:joins=>[:responsable,:afectado] )
    # Construct a hash from the ActiveRecord result
    return_data = Hash.new()
    return_data[:page] = params[:page]
    return_data[:total] = (count.to_f / params[:rows].to_i).ceil
    return_data[:records] = count
    
    return_data[:rows] = registros.collect{|u| {:id=>u.id,
        :cell=>[
          u.accion_planificada, u.responsable.try(:nombre), u.afectado.try(:nombre),
          u.strf_fecha_ejecucion, u.strf_fecha_cierre, u.efectivo,u.ejecutado,u.motivo
        ]}}

    # Convert the hash to a json object
    render :text=>return_data.to_json, :layout=>false

  end

  private
  def find_usuario
    @usuario = Usuario.find params[:usuario_id] || current_user
  end

end
